1. Field of the Invention
The present invention relates to database management and, more particularly, to a system and methodology providing workload management in distributed database management systems.
2. Description of the Background Art
Computers are very powerful tools for storing and providing access to vast amounts of information. Computer databases are a common mechanism for storing information on computer systems while providing easy access to users. A typical database is an organized collection of related information stored as “records” having “fields” of information. As an example, a database of employees may have a record for each employee where each record contains fields designating specifics about the employee, such as name, home address, salary, and the like.
Between the actual physical database itself (i.e., the data actually stored on a storage device) and the users of the system, a database management system or DBMS is typically provided as a software cushion or layer. In essence, the DBMS shields the database user from knowing or even caring about the underlying hardware-level details. Typically, all requests from users for access to the data are processed by the DBMS. For example, information may be added or removed from data files, information retrieved from or updated in such files, and so forth, all without user knowledge of the underlying system implementation. In this manner, the DBMS provides users with a conceptual view of the database that is removed from the hardware level. The general construction and operation of database management systems is well known in the art. See e.g., Date, C., “An Introduction to Database Systems, Seventh Edition”, Part I (especially Chapters 1-4), Addison Wesley, 2000.
In recent years, users have demanded that database systems be continuously available, with no downtime, as they are frequently running applications that are critical to business operations. In response, distributed database systems have been introduced to provide for greater reliability. More recently, “Shared Disk Cluster” database systems have been introduced to provide increased reliability and scalability. A “Shared Disk Cluster” (or “SDC”) database system is a system that has a cluster of two or more database servers having shared access to a database on disk storage. The term “cluster” refers to the fact that these systems involve a plurality of networked server nodes which are clustered together to function as a single system. Each node in the cluster usually contains its own CPU and memory and all nodes in the cluster communicate with each other, typically through private interconnects. “Shared disk” refers to the fact that two or more database servers share access to the same disk image of the database. Shared Disk Cluster database systems provide for transparent, continuous availability of the applications running on the cluster with instantaneous failover amongst servers in the cluster. When one server is down (e.g., for upgrading the CPU) the applications are able to continue to operate against the shared data using the remaining machines in the cluster, so that a continuously available solution is provided. Shared Disk Cluster systems also enable users to address scalability problems by simply adding additional machines to the cluster, without major data restructuring and the associated system downtime that is common in prior SMP environments.
Although Shared Disk Cluster database systems provide increased availability and reliability, they also introduce a number of new challenges. Among these challenges are that different SDC systems are used for running a wide variety of applications, each of which may have different workload profiles and resource requirements. SDC systems are subject to varied deployment requirements both in terms of the applications that users want to run on the cluster and how they want to run those applications. For example, one organization may want to run a single application across many nodes of a cluster while another may want to use its cluster to consolidate and run several applications that were previously run on different machines. Also, some users may have monolithic applications which are evenly spread out among nodes of the cluster, while others want to partition the cluster so that certain applications run on certain nodes of the cluster so as to allocate resources amongst applications sharing use of the SDC.
The demands placed by the applications on the cluster may also differ to a considerable agree in different deployment environments. For example, a cluster may host both an order entry application which is write intensive as well as a read-only application (e.g., an application serving up Web pages). A SDC may also host both mission critical production applications as well as lower priority applications (e.g., development or testing applications). Thus, there are many different ways that organizations may wish to utilize SDC systems. Organizations may, in fact, wish to deploy a combination of several of the different types of applications described above on a single cluster.
What is needed to make most effective use of SDC systems is a comprehensive workload management solution that will enable users to host several different types of applications with differing business priorities, transaction profiles and availability requirements on a single cluster. This workload management solution should provide support for deploying any combination of applications and should allow each of the applications to peacefully and cooperatively share the use of the SDC, even if the applications have very different requirements for performance. The present invention provides a solution for these and other needs.